home *** CD-ROM | disk | FTP | other *** search
/ Megahits 5 / Megahits 5 (1994)(GTI - Rhein-Main-Soft)(DE)(Disc 2 of 2)[!].iso / archive / print / multiprint203.lha / MultiPrint.doc < prev   
Text File  |  1994-02-08  |  44KB  |  1,094 lines

  1. {\Centre}{\Bold +
  2.                           MultiPrint V2.03 - Manual
  3.                                 John Matthews
  4.                                2 February 1994
  5. {\Justify =}{\B -
  6.  
  7.  NAME
  8.  ----
  9.  
  10. MultiPrint
  11.  
  12.  SYNOPSIS
  13.  --------
  14. {\Reformat -}
  15. {\Justify -}
  16.     MultiPrint <args>
  17.  
  18.       Files/A/M
  19.          :  Text file(s), to print and scripts of files to print.
  20.             Can also include layout commands. See Later.
  21.  
  22.       TabSize/N/K
  23.          :  Number of positions to expand tabs to, default is 8.
  24.             This is only used when there is no justification, and
  25.             paragraph reformatting is off.
  26.  
  27.       FF/S
  28.          :  Pay attention to FormFeed characters. Starts new pages on a
  29.             new column.
  30.  
  31.       Sides/S
  32.          :  Print to both sides of a sheet. Only useful with cut-sheet
  33.             feeder type printers, laser jets, HP Deskjets etc.
  34.             See note on 'Last Page'.
  35.  
  36.       Font/K
  37.          :  Name of font to use for text, defaults to LetterGothic.font
  38.             See notes later on font usage.
  39.  
  40.       Size/K/N
  41.          :  Point size of font, or pixel size if PxlFontSize specified.
  42.             Defaults to 8 points (1/72nds of an inch, ie 9 lines per inch)
  43.             or 8 pixels (real small, smaller at higher printer resolutions)
  44.             if you use Pxls.
  45.  
  46.       LineSpace/K/N
  47.          :  Point/Pixel size of each line to print. ie Use twice the font size
  48.             for double spacing. Can only be used to increase spacing.
  49.  
  50.       Columns/K/N
  51.          :  Number of columns to print, 1..8. Defaults to 2.
  52.  
  53.       Gutter/K/N
  54.          :  How many 1/10ths of an inch to leave at the left of odd, and
  55.             the right of even pages. Defaults to 5, ie half an inch
  56.  
  57.       OddFooter/K
  58.          :  Footer for odd pages, defaults to file name
  59.  
  60.       EvenFooter/K
  61.          :  Footer for even pages, defaults to file name
  62.  
  63.       FooterFont/K
  64.          :  Name of font for footers, defaults to same as Font
  65.  
  66.       FooterSize/K
  67.          :  Point size of footer font, or pixel size if PxlFontSize
  68.             specified. Specifying 0 causes MultiPrint to not print
  69.             a footer, which includes page numbering.
  70.             Defaults to 14 points (1/72ndsof an inch)
  71.             or 14 pixels (real small) if you use Pxls
  72.  
  73.       Pxls/S
  74.          :  Causes MultiPrint to treat font sizes as absolute pixel height,
  75.             instead of point sizes. This method is dependant on the
  76.             resolution of the printer, but is necessary for use with
  77.             non-scalable fonts. If you specify this flag, you should not
  78.             use the default font sizes.
  79.  
  80.       Priority/K/N
  81.          :  Specifies the priority to run the spooler task at
  82.  
  83.       Ask/S
  84.          :  Prompt for confirmation of each file to print
  85.  
  86.       Quiet/S
  87.          :  No error messages for unfound files.
  88.  
  89.       Margin/K/N
  90.          :  Space in 10ths of an inch to leave between columns.
  91.             Defaults to 1 tenth of an inch.
  92.  
  93.       Line/S
  94.          :  Causes MultiPrint to draw a line between columns
  95.  
  96.       Start/K/N,
  97.       End/K/N
  98.          :  Specifies which page to start/end printing on. Remember that
  99.             many parameters effect page layout, such a font, font size,
  100.             resolution, number of columns, footers etc
  101.  
  102.       Density/K/N
  103.          :  Specifies the preferences density to use when printing,
  104.             range 1..7. If you specify 0, you will be prompted with the
  105.             dots per inch of each density. Not specifying density
  106.             causes MultiPrint to use the current preferences density.
  107.             See note on resolution later.
  108.  
  109.       NoCommands/S
  110.          :  Tells MultiPrint not to interpret '{' followed by '\' as
  111.             commands. For those (infrequent) occassions when you have
  112.             such a sequence in your document. There is currently no
  113.             way in which you can print such a sequence, _and_ use
  114.             controls in the document.
  115.  
  116.       NoISP/S
  117.          :  Tells MultiPrint not to treat an indented line as the start
  118.             of a paragraph. Useful for files with indented paragraphs,
  119.             ie where the whole paragraph is indented. With this switch
  120.             on, only a blank line or the \P switch (see commands) will
  121.             start a new paragraph.
  122.  
  123.       Preview/S
  124.          :  Tells MultiPrint to run in Preview mode, printing a scaled
  125.             version of the output to the screen. While this is not
  126.             generally readable, it allows you to view the formatting
  127.             of the output.
  128.             Very useful when printing pre-formatted, or unformattable
  129.             files (source code), to check if they are fitting in the
  130.             columns. Be aware that scaling varies with different display
  131.             sizes/printer resolutions/page sizes. Details such as the
  132.             between columns lines may not always be displayed.
  133.             Replaces the old 'Check' option.
  134.  
  135.             If you have enough memory (at least 2Meg Chip), using a
  136.             Super-High Res Laced screen with LargeScreen on gives a
  137.             quite readable preview.
  138.  
  139.             Specifying a low-density for your printer may also give
  140.             semi-readable results, but is likely to be less accurate
  141.             in its formatting in relation to the final output at a
  142.             higher density.
  143.  
  144.       DisplayName/K
  145.          :  Gives the full name of a Screen Mode to use for the preview.
  146.             Use "DisplayName=?" to bring up a requester, or enter your
  147.             preferred mode, such as "PAL:High Res Laced" in the format
  148.             they appear in the requester.
  149.             The default is to display the preview on the default public
  150.             screen, usually Workbench.
  151.  
  152.       LargeScreen/S
  153.          :  This will create a screen which is larger than displayable,
  154.             and scrolls with the mouse.
  155.  
  156.       SpoolDir/K
  157.          :  If you specify a directory name to this parameter, pages
  158.             are spooled to disk during processing, thus using less
  159.             memory, especially in the case of printing a large file to
  160.             both sides of a sheet.
  161.  
  162.       Balance/S
  163.          :  Tells MultiPrint to balance the columns on the last sheet
  164.             of a file.
  165.  
  166.       NoFont/S,NoStyles/S,NoJust/S
  167.          :  Tells MultiPrint to ignore Font/Style/Justification changes
  168.             repectively.
  169.  
  170.       ForceBold/S,
  171.          :  Forces all fonts (except in footers) into Bold. This is useful
  172.             if small, light fonts don't show well on your printer. Don't
  173.             use this if you don't need it, as bold in your text won't
  174.             show any difference.
  175.  
  176.       PercentPage/K/N,
  177.          :  Given a number from 1 to 100, prints to that percentage of
  178.             the page-length. This is useful for laser printers without
  179.             enough memory to print a full page of text.  For example,
  180.             entering 50 will only print to the top half of each page.
  181.             For this option, page length is derived from the printer
  182.             driver, or from PageLength if it exists and HPPrinter is on.
  183.  
  184.       RevOdd/S,NoRevOdd/S,RevEven/S,NoRevEven/S,
  185.       RevNoSides/S,NoRevNoSides/S
  186.          :  Alter the order in which pages will be printed. See the
  187.             section on printing order later.
  188.  
  189.  See Also the notes on 
  190.    Page/Printer Setup
  191.    Environment Arguments
  192.  
  193. {\Reformat =
  194. {\Justify =
  195.  
  196.  DESCRIPTION
  197.  -----------
  198.  
  199. MultiPrint is a program for printing text files to both sides of a page,
  200. in  multiple columns, and very small, or very large, high quality fonts.
  201.  
  202. As an example of the efficiency of MultiPrint, I have printed a file
  203. which was designed to be 127 pages long. I printed it at 7 points, which
  204. is small, but is readable at 300dpi, and it took only 8 sheets of paper.
  205. Having been reformatted with the +R switch, 346 lines of the original
  206. document were printed on the first side of a sheet alone.
  207.  
  208. MultiPrint makes use of many Amiga OS Release 2.04 features, and so
  209. requires at least this revision of the operating system. These features
  210. include Compugraphic Scalable Font technology, to produce characters to
  211. the correct size at the full resolution of the, printer, and the correct
  212. aspect ratios.
  213.  
  214.  
  215.  
  216.  SOURCE
  217.  ------
  218.  
  219. The source code is not included, but is available from the author.
  220. MultiPrint was writtern in M2Sprint Modula2, but should be easy to port to
  221. other languages if desired.
  222.                                        
  223.  
  224.  COPYRIGHT
  225.  ---------
  226.  
  227. MultiPrint V2.01 is freely distributable. MultiPrint V2.01 is free to be
  228. spread on public-domain and shareware disks especially on Fred Fish's
  229. AmigaLibDisks, as long as they are sold for a reasonable charge that is
  230. less than US $6 or equivalents. For use in commercial products the
  231. permission of the author is required. MultiPrint V2.01 may be copied and
  232. distributed via electronic networks such as the Internet, also it may be
  233. held available on anonymous ftp-servers, mail-boxes or BBS's. The
  234. Copyright is still held by the Author.
  235.  
  236. I am offering MultiPrint as shareware. If you use it regularly, let me
  237. know. If you want to show your appreciation, or maybe encourage me to
  238. develop the GUI version, or specific mods, the suggested registration fee
  239. is US$20 (in notes, or something easy like that, NZ$ even better), but this
  240. is just a suggestion. Registered owners with Usenet access will get some
  241. support via email. No obligations, no promises.
  242.  
  243. However, if you want to use it for some commercial project/product, please
  244. make it up to me somehow.
  245.  
  246. If you need some modifications done, offer me some incentive.
  247.  
  248. NO MATTER WHAT -
  249.  Leave the program as is, and documentation intact.
  250.  
  251.  AUTHOR & SUPPORT
  252.  ----------------
  253.  
  254. {\Centre +
  255.     John Matthews
  256.     4 Wadham Grove,
  257.     Tawa, 6203
  258.     Wellington,
  259.     New Zealand.
  260.     INTERNET: tribble@gphs.vuw.ac.nz
  261.     (Irregular monitoring)
  262. {\Justify =
  263.  
  264. Support may be limited to an attempt to fix any bugs which may be found,
  265. no promises. The author takes no liability for any damage caused by
  266. the program, but then, neither does he expect any.
  267.  
  268. Try the program out a few times before leaving it to print a large
  269. document unattended.
  270.  
  271. Leave me a message if you have any suggestions
  272.  
  273.  CHANGES
  274.  -------
  275.  
  276. 1.0 First Release, sort of. Was never really released
  277.     (29-Jan-93)
  278. 1.1 Second (attempt at a) Release.
  279.     Added support for multiple files and scripts.
  280.     (4-Feb-93)
  281. 1.2 Third ( attempt at a ) Release.
  282.     Added :
  283.       1. Right Justification.
  284.       2. Paragraph reformating.
  285.       3. Margins and Lines between columns.
  286.       4. Start/End page printing (for aborted print jobs)
  287.       5. Density setting.
  288. 1.3 Fourth ( (and successful) attempt at a ) Release.
  289.     February 24 1993
  290.     Added
  291.       1. Environment variable
  292.       2. LE and RE, to align columns on both sides of page.
  293.       3. Break commands
  294. 1.4 March 9 1993
  295.     Bug Fix :
  296.       fixed bugs in
  297.       1. handling of script files (it wouldn't)
  298.       2. printing of more than one file at a time (end of last line)
  299.       3. crashing on abort
  300.       4. centering of lines
  301.     Added
  302.       Inter-file title option (See Arguments below)
  303.  
  304. 1.5 March 20 1993
  305.     Bugs fixed :
  306.       1. printing of multiple files, other than starting a new sheet per
  307.          document.
  308.       2. fixed error with lines containing only spaces
  309.     Added
  310.       1. direct support for HP printers. See documentation.
  311.       2. NoCommands option (for Rob Poole)
  312.     Changed
  313.       1. Moved printer specific options into MultiPrint.printer
  314.          environment variable
  315.       2. Lengthened some command line option names
  316.  
  317. 1.6 April 5, 1993
  318.     Bugs fixed :
  319.       1. Re-occurring centering bug (Rob Poole).
  320.       2. Error with .otag files specifying non-present fonts.
  321.          Caused MultiPrint to not change styles (Italics etc)
  322.          if your CGTimes .otag file specified CGTimesItalic and
  323.          you didn't have it.
  324.       3. Possibly other formatting problems.
  325.       4. (Hopefully) fixed problem with Network printers found
  326.          by Dale Larson. Waiting to hear on this one.
  327.       5. Now starts new files on a new sheet when it's supposed
  328.          to, (the default) instead of always just on a new line.
  329.          (Rob Poole again! Watch it you guys or I might start
  330.          putting bugs in intentionally to give other guys a
  331.          chance!)
  332.       6. Enforcer hit on last page (it came and went).
  333.     Added
  334.       1. NoISP switch on command line.
  335.       2. \Paragraph command, to go with 1.
  336.  
  337.     Tested with Enforcer, Mungwall etc. I didn't find any hits.
  338.     Let's hope Dale doesn't either.
  339.  
  340. 1.7 April 19, 1993
  341.     Bugs fixed :
  342.       1. Printing of inter-file headers (via the +T flag) corrected
  343.          to print before the new file, instead of after the old.
  344.          This means it prints on the same sheet/page/column as the
  345.          new file (dependant in the L/C/P/S flags).
  346.       2. Corrected allignment of even pages when not printing to
  347.          both sides of a sheet.
  348.       3. Check option didn't work anymore :-(
  349.          Has now been removed, as it is superceded by the Preview
  350.          option, which is much simpler and more flexible (ie works
  351.          with reformating and justifying).
  352.       4. Now frees memory from page-in-progress when aborted.
  353.     Features Added:
  354.       1. Preview function. Allows a look at how the document will
  355.          appear, without printing.
  356.          Very useful when printing pre-formatted, or unformattable
  357.          files (source code), to check if they are fitting in the
  358.          columns.
  359.       2. HPShingle added to printer setup environment variable,
  360.          MultiPrint.Printer. See the note on Shingling in the
  361.          HPPrinter options below. Basically, it sacrifices speed
  362.          to improve quality on DeskJet printers from HP500C up.
  363.  
  364. 1.8 April 25, 1993
  365.     Bugs fixed :
  366.       1. Persistant bug with centering in non-reformatting mode fixed.
  367.       2. Fixed bug with inter-process communication, which caused the
  368.          program to jam sometimes when aborted.
  369.       3. Aborting print fixed when a command-line option is misspelt,
  370.          resulting in a non-existant file message.
  371.       Maybe more. It's easier to debug with the preview option present.
  372.       Uses less paper when printing to the screen.
  373.     Changes :
  374.       1. Slight redefinition of command format. If you want to place
  375.          formatting commands, in particular Justification and Centering,
  376.          on their own line (they must start the line anyway or they
  377.          will be ignored) without leaving a blank line, leave
  378.          off the closing brace. Alternately, remember to leave the
  379.          closing brace it there is supposed to be a blank line.
  380.       2. Improved preview function, to allow it to run on existing
  381.          (public) screens, especially Workbench.
  382.       3. Improved preview to allow for large 'virtual' screens, in
  383.          one direction (usually height) with autoscroll.
  384.       4. Added spoolling to disk, for those really large files, and
  385.          background printing, where memory is required for other
  386.          things.
  387. 1.9 April 28, 1993 - OOPS, version still read 1.8 etc
  388.     Bugs fixed :
  389.       1. Changed Footer options from xxxFootxxx back to xxxFooterxxx.
  390.          My compiler has trouble with long string constants, so now
  391.          some things are linked in as objects, and the template can
  392.          be as long as necessary.
  393.       2. End-of-paragraph at end-of-page code was commented out during
  394.          testing
  395.       3. LargeScreen option should now (correctly) only give you
  396.          scrolling in one dimension in all displays.
  397.       4. Default Footers now give the name of the first file on a page,
  398.          rather than the last.
  399.     Changes
  400.       1. Made balancing the columns on last pages an option.
  401.  
  402. 1.10 May 4, 1993
  403.     Bugs fixed :
  404.       1. Graceful exit if fonts or printer not opened.
  405.  
  406. 1.11 May 11, 1993
  407.     Bugs Fixed :
  408.       1. Fixed bugs in handling of CSI type bold/italic etc codes,
  409.           a) not switching off
  410.           b) adding spaces in non-justified mode
  411.          Thanks to Andrew Harrison for spotting this
  412.       2. LineSpacing argument changed to only work for increasing spacing.
  413.          Before, if you specified a smaller point size for the spacing
  414.          than for the font, nothing would print.
  415.  
  416. 1.12 May 13, 1993
  417.     Bugs Fixed :
  418.       1. Top margin bug in Hewlett Packard direct driver code. Caused
  419.          problems (I suspected, and have had one confirmation) with
  420.          laser printers, though not with DeskJets. On my DeskJet I got
  421.          three millimeters extra space used at the top of the page.
  422.          Still, better to stick with the defaults.
  423.          
  424.          Please note, if you were using the PageLength printer environment
  425.          argument in conjunction with the HPPrinter flag, you'll have a
  426.          larger top margin, and less actual print height. For example,
  427.          on a DeskJet 500C, I had to reduce the PageLength variable from
  428.          283 millimeters to 280 millimeters, ie PageLength=280.
  429.          
  430.       2. Fixed problem with Ctrl-C not working once all the pages were
  431.          prepared, and awaiting printing. Could conceivably mean waiting
  432.          for lots of pages if your computer was way faster than your
  433.          printer and you wanted to stop printing.
  434.     Added Features
  435.       1. HPUniDir flag in printer environment variable, to slightly improve
  436.          quality on HP DeskJets.
  437.  
  438. 2.00 May 27, 1993
  439.     Bugs Fixed :
  440.       1. Big bug fixed for those out there using most printers other than
  441.          Hewlett Packard compatible printers. Now, shouldn't print blank
  442.          lines where bits of text should be.
  443.       2. Fixed some small formatting problems.
  444.       3. Fixed some other things, but I've forgotten what they were.
  445.          Had had no serious messages about them though :-)
  446.       4. Jumped version numbers, and changed to a trailing 0, to provide
  447.          consistent numbering.
  448.     Added Features :
  449.       1. Modified Centering, so \C - returns you to the previous mode of
  450.          justification. It is no longer necessary to remember when
  451.          adding the codes to the files.
  452.       2. Added 'This page intentionally left blank' :-)
  453.       3. Added command line switches to turn off in-file formatting
  454.          commands.
  455.  
  456. 2.01 June 9, 1993
  457.     Bugs Fixed :
  458.       1. Major bug : Output to multi-pin printers was broken.
  459.          MultiPrint uses a technique of strip-printing, to keep from
  460.          having to create the full (high resolution) page image in (chip)
  461.          memory.
  462.          Some printers, like Hewlett Packards, are smart, and buffer
  463.          raster lines until they have enough to fill the print head.
  464.          Others are likely to give blank lines between strips.
  465.          Previous versions of MultiPrint attempted to combat this, and
  466.          while the technique was correct, technicalities in the coding
  467.          caused it to fail. Now this has been tested more completely.
  468.          MultiPrint should now work with printers such as Canon bubble jets.
  469.       2. Aborting printing could leave the printer in a state where
  470.          another print would fail, and the program would just sit there.
  471.     Added Features :
  472.       1. Force Bold option added, for printers that can't print thin fonts
  473.          well. Forces all body-text into bold.
  474.          From a suggestion by Christopher A. Wichura.
  475.       2. PercentPage option added.
  476.          This option is designed for people with laser printer without
  477.          enough memory to print a full page.
  478.          For this option, page length is derived from the printer driver,
  479.          or from PageLength if it exists and HPPrinter is on.
  480.  
  481. 2.02 Not Really Released.
  482.     Can't remember what changes took place.
  483.     There was an attempt at fixing the bug some printer drivers have,
  484.     don't know whether it worked or not.
  485.  
  486. 2.03 February 2, 1994
  487.    Finally added a couple of requested features, as the new version was
  488.    proving slow progress.
  489.    Individual switches now present to allow modification of page printing
  490.    order. Apparently this is necessary for printers (such as Canon bubble
  491.    jets) which print on the top side of the page. See note on Page Ordering
  492.    later.
  493.  
  494. 3.0 (Planned) Workbench interface. Drop and go operation and more.
  495.     This version may never eventuate. It depends on how much feedback
  496.     I get, as well as how much time I have to spend.
  497.     The amount of work required to do this properly grows on me
  498.     whenever I contemplate it. Some settings must be available only
  499.     on startup, and should be savable as defaults. Some should
  500.     be able to be modified on a per file basis, and some, mostly
  501.     those related to page size and printer resolution choices,
  502.     are limited by the implementation to startup-time only.
  503.     Let's face it - GUIs are _nice_ but unnecessary.
  504.  
  505.     However, having said all this, unless something else comes along,
  506.     I probabably will slowly work on increasing the GUI elements,
  507.     in a piece-by-piece basis.
  508.  
  509.  
  510.  
  511.  PURPOSE & THEORY
  512.  ----------------
  513.  
  514. MultiPrint was designed to print text files to as few pages as possible.
  515. You know how sometimes having a .doc file is not good enough, you need to
  516. be able to see it on paper, because you are always referring to it. Or you
  517. have a really neat StarTrek© parody you want to show someone.
  518.  
  519. MultiPrint can print using multiple columns, both sides of a page, with
  520. really small, but still high resolution fonts to fit many times the usual
  521. amount on a page.
  522.  
  523. For example, an A4 page can usually hold about 60 lines of text. With
  524. MultiPrint and an 7 point font (about 30 pixels high on a 300dpi laser or
  525. deskjet) giving 100 lines of text, with 2 columns of output to both sides
  526. of the page gives 100 * 2 * 2 = 400 lines per page.
  527.  
  528. MultiPrint uses whichever font you specify, and can handle narrow and
  529. proportional fonts to increase the number of columns you can print. Lines
  530. can be wrapped around and right justified for improved use of space and
  531. readability, producing newspaper like output.
  532.  
  533. MultiPrint allows a gutter for stapling sheets together. The default of
  534. 5/10ths of an inch is quite adequate.
  535.  
  536. MultiPrint determines page size, and resolution from the system. Page
  537. oriented printers such as laser printers and Hewlett Packard DeskJets
  538. specify their resolutions directly. Tractor feed etc printers must have
  539. their lines/inch and number-of-lines set correctly to reflect page length,
  540. but they don't work so well for both sides printing anyway.
  541.  
  542. MultiPrint queues the pages, and uses a child process to print the even
  543. pages first in ascending order, then the odd pages in descending order on
  544. the reverse sides.
  545.  
  546. Due to the queueing of pages, MultiPrint can use a certain amount of
  547. memory. All pages are stored in memory as they are processed, also the
  548. program requires a buffer for processing the pages. Text files don't
  549. usually get large enough for this to be a problem on most systems these
  550. days, and this is faster and easier than spooling off to disk again.
  551.  
  552.  
  553.  VERSION
  554.  -------
  555.  
  556. This is version 2.01 of MultiPrint. It does everything I need, but I would
  557. like to give it a nice Workbench interface. This may, however, take time.
  558.  
  559. If anyone has any need for features other than those present, let me know,
  560. and maybe offer suitable inducements :-)
  561.  
  562. I'd like, at least, to make enough money to offset the cost of the ink
  563. cartridge I used up in testing this program.
  564.  
  565.  
  566.  STARTING
  567.  --------
  568.  
  569. MultiPrint is a Shell/CLI only program, and requires at least version 2.04
  570. of the Amiga OS. All parameters, as described above, except for the file
  571. name, have defaults and require keyword specifications to override them.
  572.  
  573. MultiPrint runs at a default priority of -1, as a good printing utility
  574. should, though this can be changed with the priority keyword. Priority is
  575. not overly important in some respects, however, as MultiPrint does not
  576. busy-wait. If your computer is fast enough, and/or so is your printer
  577. driver, you could well be waiting on your printer. Laser printers however
  578. will more likely be waiting on the computer, and so MultiPrint will be
  579. grabbing every available cycle, so leave at a low priority for background
  580. printing.
  581.  
  582. Before printing a file, it may be a good idea to use the "Check" option to
  583. determine how much line wrapping is occuring. Modern fonts are variously
  584. weighted. A good, light proportional font can fit many more characters on
  585. average than a heavy non-proportional font, so check if the current number
  586. of columns and font size will avoid line wrapping. Too much line-wrapping
  587. and you may end up wasting space with mostly blank lines.
  588.  
  589. MultiPrint can be stopped at any time with a <CTRL>-C, or the break
  590. command. It runs unattended until the midway point, if you have specified
  591. the "Sides" option. In this case, when it finishes printing the even pages,
  592. a prompt will appear. Wait for the printer's buffer to empty, take the pages
  593. in the order they fill up your tray (reversed) and place them back in the
  594. paper bin, face up (for DeskJets, I'm not sure for other printers), and hit
  595. 'Continue'. When the program finishes, the pages will be up the right way,
  596. and in the correct order.
  597.  
  598.  
  599.  ARGUMENTS
  600.  ---------
  601.  
  602. As described at the start of this document, plus
  603.  
  604. Layout Commands:
  605. You can precede file names with flags to control layout. These are
  606. specified as a plus (on) or minus (off) followed by the one of the
  607. following characters preceding file names they are to operate on, and
  608. stay in effect till specified again:
  609.  
  610.    C : new files begin on a new column
  611.    P : new files begin on a new page
  612.    S : new files begin on a new sheet (the default)
  613.    L : new files begin on a new line
  614.    N : restart page numbering after each file
  615.  * J : following files start in Right Justify mode
  616.  * R : following files will start in paragraph reformatting mode
  617.  * T : following files will be preceded by their name in the form
  618.   -------------------------------text.doc---------------------------------- 
  619.  
  620. Codes marked as * are effected by the plus/minus. A minus to J or C
  621. results in no justification, a minus to R turns off paragraph reformating.
  622.  
  623. eg. MultiPrint +J +R DocumentFile -J -R SourceCode.c
  624.  
  625. The +S option, for start document on a new sheet, resets page numbers,
  626. and in the case of both sides printing, finishes the printing of all queued
  627. odd and even pages before continuing.
  628.  
  629. Script files:
  630. You can print a list of files by passing a file starting with a first
  631. line consisting of ";SCRIPT" (no quotes). Subsequent lines are controls
  632. as above, and file names. If a file name starts or ends with spaces, it
  633. should be quoted.
  634.  
  635. You can specify wildcards, but remember - MultiPrint does no analysis of
  636. whether a file is plain text or not. Printing binary code can eat your
  637. paper!
  638.  
  639. If FF is specified, FF characters start a new column.
  640.  
  641. The maximum number of columns is eight. Four is usually more than adequate.
  642. If you have a need for more, let me know
  643.  
  644. Font sizes should be specified in points, which are 1/72nds of an inch.
  645. This will result in the same size font on paper, no matter what resolution
  646. your printer handles/is set at. See note on resolution.
  647.  
  648. However, if you don't have any scalable fonts, you may have to specify the
  649. sizes of fonts directly. In this case use the "PxlFontSize" switch.
  650.  
  651. The "Height" argument is used to increase/decrease inter-line spacing. Use
  652. a point size greater than the font size for a larger spacing, smaller for
  653. less (at the risk of chopping the bottom off the characters).
  654.  
  655. "OddFooter"/"EvenFooter" override the default of using the filename in the
  656. footers.
  657.  
  658.  
  659.  
  660.  LAYOUT WITHIN A DOCUMENT
  661.  ------------------------
  662.  
  663. MultiPrint is designed in such a way that you shouldn't need to modify
  664. a document before printing it.
  665.  
  666. Sometimes, however, you might want to.
  667.  
  668. For example, there may be parts of a document where you don't want
  669. paragraph reformatting to occur. Or you might want to centre just a
  670. heading. Or you might want to use bold or italics for added emphasis.
  671.  
  672. MultiPrint recognises ANSI sequences for bold/italics such as are
  673. recoginised by Amiga printer drivers, and by the console device, and
  674. are sometimes used in documents.
  675.  
  676. MultiPrint also recognises some sequences (commands) of its own.
  677.  
  678. These sequences begin with a '{' followed by a '\' and end with either '}'
  679. or the end of line.
  680.  
  681. They are of the format:
  682.  \Xy a
  683. where 'X' is the first letter of the command, 'y' is the rest of the
  684. command, and doesn't need to be present, {\B +}the space is required{\B -}
  685. if 'a' is present, and 'a' is the argument.
  686.  
  687. {\BOLD +}All these commands should be surrounded by '{' and '}', but if
  688. I did that here, they would not appear if you printed this document with
  689. MultiPrint. {\BOLD -}
  690.  -- Thanks to Rob Poole
  691.  
  692. Please remember, you don't have to use any of these in your document to
  693. get good output. Just precede the document name on the command line with
  694. '+J +R'.
  695.  
  696. They currently include:
  697.  
  698. \Bold [+|-]
  699.  {\B +}Turns bold on/off. Default is on. DOES NOT TOGGLE.{\B -}
  700.  
  701. \Italic [+|-]
  702.  {\I +}As with bold.{\I -}
  703.  
  704. \Underline [+|-]
  705.  {\U +}As with bold.{\U -}
  706.  
  707. \Normal
  708.  {\N }Turns off all styles.
  709.  
  710. \Justify [+|-|=]
  711.  Turns on/off. '=' means reset to this document's initial state.
  712.  
  713. \Centre [+|-]
  714.  Turns line centering on/off. Turning centering off now returns you to
  715. the previous justification mode. You can change directly to a different
  716. justification by using \J.
  717.  
  718. \Reformat [+|-|=]
  719.  As with Justify, but for paragraph reformatting. Turn it on/off/back to
  720. the original setting for this document.
  721.  
  722. \Font [fontname]
  723.  Change font. Will attempt to change to the new font. The font will be
  724. in the current style, so if you want it un-styled, use \N first.
  725.  
  726. If 'fontname' is not specified, returns to the default font as specified
  727. on the command line.
  728.  
  729. \Section <Column|Page|Sheet>
  730.  Cause a break in the document. One of C,P or S must be specified and
  731. causes printing to continue on a new column, page (side of a sheet)
  732. or sheet.
  733.  
  734. \Paragraph
  735.  Force paragraph break. Only really necessary if you want paragraphs which
  736. start at the left margin, with no empty lines between them.
  737.  
  738. NOTE: - for Justify, Reformat, and Center only.
  739. Justify, Reformat and Center only take effect if they occur at the
  740. start of a line.
  741.  
  742. If they are specified elsewhere, they are IGNORED.
  743.  
  744. If any command sequence is ended by the end of a line, rather than a '}',
  745. then that end of line is ignored. So if the command begins at the start
  746. of the line (as formatting commands must), and there is no end of command
  747. brace ('}'), no blank line is output.
  748.  
  749.  
  750.  SPEED
  751.  -----
  752.  
  753. MultiPrint is not the fastest way of printing. It does, after all, print
  754. everything as graphics. This however is the most flexible way, and allows
  755. for the maximum amount on a page (if you can read small, high density
  756. text). Let it run in the background, however, and you only need to do
  757. anything when all the even pages are finished (when doing both-sides
  758. printing).
  759.  
  760. I admit, some printers are so slow at graphics (for example old DeskJets)
  761. that you may feel this method is pointless. Still, it gives you the
  762. option.
  763.  
  764. Still, in some cases you are able to fit so many pages onto the one sheet,
  765. it is actually faster than printing that many sheets.
  766.  
  767. For higher speed use a lower density, but don't use too small a font.
  768.  
  769.  NOTES
  770.  -----
  771.  
  772.  Resolution
  773.  ----------
  774.  
  775. The lower the resolution you use for printing, the less readable a font
  776. at the same point size will be. A point size of 7 at 300dpi uses a system
  777. font size of 29 pixels high, at 150 dpi the same font is only 14 pixels
  778. high.
  779.  
  780.  Font Quality
  781.  ------------
  782.  
  783. This ties in directly with resolution. Fonts are designed for different
  784. purposes, and because of this can be of different qualities.
  785.  
  786. For instance, many fonts on the Amiga are designed as screen fonts.
  787. As such they are limited often to small point sizes, and even the larger
  788. ones may not look good when printed.
  789.  
  790. MultiPrint is designed primarily with high resolution printers, and
  791. scalable fonts in mind. Most scalable fonts are designed to be used at
  792. high resolutions, and have a lot of detail in them. They look very good
  793. printed at 300dpi with point sizes as low as 7pt. This makes them 29 dots
  794. high. If you have tried using these scalable fonts as screen fonts,
  795. however, you will know that below a certain size, they no longer look so
  796. good. Fonts that are to be used with low dot sizes, must be designed for
  797. them.
  798.  
  799. The bottom line is this:
  800. If you intend to print at resolutions lower than 300dpi, either keep
  801. to a reasonable point size (at least 10 to 12) or find a font that
  802. looks okay at whatever size you require.
  803.  
  804. You might have to rely on system (non scalable fonts) using the 'Pxls'
  805. argument.
  806.  
  807.  Scalable Fonts
  808.  --------------
  809.  
  810. MultiPrint tries to be smart with Scalable fonts. If you specify
  811. italics, or bold, or both together, it will attempt to load the correct
  812. font for that style, rather than letting the system generate one. This
  813. results in far superior italics and bold etc at the expense of whatever
  814. time is required to open these fonts. MultiPrint will of course fall
  815. back to system generated versions if necessary. However, do try to
  816. specify the base name for a family of a fonts if possible. For example,
  817. use CSTimes where you also have CSTimesBold, CSTimesItalic, and
  818. CSTimesBoldItalic.
  819.  
  820.  Fonts in general
  821.  ----------------
  822.  
  823. Should always be on your FONTS: assign path, and don't need to be
  824. specified with the '.font' extension. If you specify a scalable font
  825. by its full path, bold/italic versions will not be found. Instead use
  826. 'assign Fonts: "path" add' to add the path to your fonts assign.
  827.  
  828. MultiPrint keeps all fonts used in memory until it finishes, so you may
  829. run out of Chip memory for fonts if you use too many. If MultiPrint
  830. cannot open a font for any reason, it will continue using the previous
  831. font.
  832. NOTE: when I say Font, I also mean style of Font (bold, italic etc).
  833.  
  834.  Paragraph Reformatting
  835.  ----------------------
  836.  
  837. Paragraph Reformatting is very useful for fitting text files into narrow
  838. columns, where they would either frequently wrap, or seldom come close to
  839. filling the line.
  840.  
  841. In conjunction with right justification, or flushing, you get a very nice,
  842. newspaper style output.
  843.  
  844. The problem with paragraphs is determining where they end.
  845.  
  846. In MultiPrint, paragraphs are broken up in two ways:
  847. 1. A line which begins with a space begins a new paragraph.
  848. 2. A blank line marks the end of a paragraph.
  849.  
  850. The only common method this misses out, is paragraphs which start at the
  851. beginning of a line, with no empty line before them.
  852.  
  853. With such paragraphs, you can only tell if there is a break by the fluke
  854. of how much blank space there is at the end of the last line.
  855.  
  856. Documents with paragraph breaks of this kind will need to have their
  857. paragraph breaks manually modified before printing.
  858.  
  859. {\BOLD +}Please be aware that this document has had special attention to work
  860. properly with paragraph reformatting on. Many files produced as
  861. documentation for a program have headings, and formatting in them that
  862. MultiPrint's reformatting will destroy.
  863.  
  864. With such files, where the formatting is important, use Justification
  865. if you like, but leave reformatting off. Or, you can modify the document
  866. to manually control the use of paragraph reformatting throughout.{\BOLD -}
  867.  
  868.  Page/Printer Setup
  869.  ------------------
  870.  
  871. MultiPrint gets most of the information it needs from Preferences,
  872. and so you should make certain your preferences are set correctly,
  873. including printer driver, page size and density, even if you use the
  874. HPPrinter option (see below).
  875.  
  876. However some information is not available in this manner.
  877.  
  878. In particular:
  879.  
  880. Printers seldom print to the whole page. In particular, DeskJet 500
  881. printers cannot print to the top 5 millimetres of a page, the last
  882. two centimetres, the left 3 millimetres, or the right 10 millimetres.
  883.  
  884. In order to get the columns of either side of a sheet of paper to
  885. line up, you need to specify the left and right edges of printing as
  886. the LeftEdge and RightEdge parameters in the environment variable
  887. "MultiPrint.printer". See also the section on HP printers below.
  888.  
  889. The best way to find the correct LeftEdge and RightEdge values is
  890. to print a test page with Gutter=0 as an option, and LeftEdge and
  891. RightEdge unset, or set to 0 in MultiPrint.printer, and with +R and +J
  892. before the file name, and End=1 to limit the printing to one page.
  893. Then measure (in millimeters) the left and right edges of the printing.
  894.  
  895.  Hewlett Packard Printers
  896.  ------------------------
  897.  
  898. Starting with version 1.5, MultiPrint can print directly to Hewlett
  899. Packard printers. This is not so always faster, that depends on the
  900. speed of your computer and printer - on my system, using the printer
  901. device to do the printing keeps up with the printer - but will always
  902. use less processor overhead. It also allows for printing to more of
  903. the page than the printer device can.
  904.  
  905. As with the Left and Right edges as explained above, printers have
  906. top and bottom margins. These vary with printer models also, and are
  907. not provided for by preferences, which takes the lowest-common-multiple
  908. approach.
  909.  
  910. Setting the HPPrinter flag in the MultiPrint.printer environment
  911. variable tells MultiPrint to print directly to an HP printer.
  912.  
  913. Use the HPNoCompression flag if your printer does not support compression,
  914. such as early DeskJet models.
  915.  
  916. HPShingle is a value to use to effect quality of printing on DeskJet
  917. printers, and is only effective on HP500C (note the C) and up.
  918. So far, this is only the HP500C and HP550C. Shingling does not work
  919. with HP500s.
  920.  
  921. Shingling causes the printer to print graphics in multiple passes, to
  922. avoid laying down too much ink at once, causing "blooming".
  923. Using HPShingle=0 (the default) results in no shingling. The printer
  924. prints at full speed. HPShingle=1 results in each pass of printing only
  925. 50% of the data, and so requires two passes when HPShingle=0 would require
  926. only one. HPShingle=2 prints only 25% per pass, and so requires four
  927. passes, and so four times the amount of time, than HPShingle=0.
  928.  
  929. If you are willing to sacrifice speed for quality, HPShingle=1 is the
  930. way to go.
  931.  
  932. HPUniDir forces DeskJet printers to always print from left to right, thus
  933. giving more reliable dot positioning, while sacrificing speed. Theoretically
  934. some DeskJets can determine when to use Uni and when not, but here's a way
  935. for you to decide.
  936.  
  937. PageLength, this setting in the MultiPrint.printer variable tells MultiPrint
  938. just how long a _printable_ page your printer supports, for a given page
  939. size. To set this variable, follow this procedure:
  940.  
  941.  1. Set the correct page size in Preferences for the paper you use.
  942.  2. Set the MultiPrint.printer environment variable, with the LeftEdge
  943.     and RightEdge values as determined above, and with HPPrinter set.
  944.  3. Set PageSize=500 (or higher) in the MultiPrint.printer environment
  945.     variable.
  946.  4. Print a page as described above, ie with +J +R and End=1
  947.     This page will print incomplete, ie will only contain some of the
  948.     lines that it should.
  949.  5. Take the measurement, top of the text to bottom of the output, in
  950.     millimeters.
  951.  6. Use this value for PageSize in the MultiPrint.printer environment
  952.     variable in future.
  953.  
  954. For example, the correct settings for a DeskJet 500C printer with A4 paper
  955.  are :
  956.  
  957.  SetEnv MultiPrint.printer "LeftEdge=3 RightEdge=10 PageLength=280 HPPrinter"
  958.  
  959. and then, for permanent effect,
  960.  
  961.  copy env:MultiPrint#? envarc:
  962.  
  963. Via the printer.device, you get about 5 millimeters, or 1/2 an inch margin
  964. at the top, and 21 millimeters, or just under 7 8ths of an inch at the bottom.
  965. Using HPPrinter and PageSize=280, you get 5 and 9 millimeters, respectively.
  966.  
  967.  
  968.  Page Ordering
  969.  -------------
  970.  
  971. The following switches are new to 2.03.
  972.  
  973.         RevOdd/S,NoRevOdd/S,RevEven/S,NoRevEven/S,
  974.         RevNoSides/S,NoRevNoSides/S
  975.  
  976. When printing to both sides of a page, MultiPrint prints all the even pages,
  977. then all the odd pages.
  978. With Deskjet printers, if the odd pages are printed in reverse (descending)
  979. order after the even pages were printed in normal (ascending) order, then
  980. in between, all you have to do is take the pages out of the output bin,
  981. in the order they have been deposited, and place them face up in the
  982. input bin. This works because Deskjet printers print on the underside of the
  983. paper as it is taken out of the bin.
  984. So, with a Deskjet printer, use RevOdd in your command line, or environment
  985. variable.
  986. If your printer prints on the topside of the page, as Canon Bublejet printers
  987. do, use neither RevOdd nor RevEven, but take the pages out of the bin and
  988. turn the pile over (leaving it intact, not turning over each page
  989. individually).
  990.  
  991. If you want your pages collated automatically when printing single sided,
  992. use the RevNoSides switch. This does have the effect of delaying the actual
  993. printing until all the pages have been processed however, which will also
  994. use more memory. This switch does not effect the RevOdd/RevEven switches,
  995. so can remain always in the environment variable.
  996.  
  997. The No... switches are present to combat the environment variable settings
  998. during one-off prints.
  999.  
  1000.  
  1001.  Environment Variables
  1002.  ---------------------
  1003.  
  1004. MultiPrint uses two environment variables, MultiPrint.opts and
  1005. MultiPrint.printer, to control often used options, and optimise your
  1006. printer usage. Neither of these variables can be termed necessary,
  1007. but they improve either usage, quality of output, or speed. If you don't
  1008. use them, you're stuck with my defaults, or with specifying all arguments
  1009. always. If you don't set them, the columns on either side won't allign,
  1010. and you won't get optimal speed or page usage on HP printers.
  1011.  
  1012. MultiPrint.opts:
  1013.  
  1014. This environment variable has exactly the same format as the command line,
  1015. so make sure you try anything you intend to put in it on the command line
  1016. first. Also, avoid putting anything that will be interpretted as a file
  1017. name in the environment variable.
  1018.  
  1019. Switches which are specified in the environment variable, such as
  1020. 'Line' or 'Sides' cannot be turned off in the command line. Do not use
  1021. them in your environment variable unless you intend to always use
  1022. them.
  1023.  
  1024. An example environment variable would be
  1025.  
  1026. setenv MultiPrint.opts "+R +J font=CSTimes line LE=3 RE=10"
  1027.  
  1028. This sets MultiPrint to default to Reformating, Justification, using
  1029. CSTimes as the text body font, drawing a line between columns, and
  1030. expecting the offsets Desjet 500s print to.
  1031.  
  1032. You should uses "Setenv EnvArc:MultiPrint.opts" to set a permanent
  1033. default.
  1034.  
  1035. MultiPrint.Printer:
  1036.  
  1037. This variable sets page offsets to allow the allignment of columns on
  1038. either side of a sheet, as well as options for optimal use of an
  1039. Hewlett Packard printer. It works similar to command lines, and has
  1040. the format :
  1041.  
  1042.  LeftEdge/K/N,RightEdge/K/N,PageLength/K/N,HPPrinter/S,HPShingle/K/N,
  1043.  HPNoCompression/S,HPUniDir/S
  1044.  
  1045. and functions as follows:
  1046.  
  1047.  LeftEdge/K/N,RightEdge/K/N
  1048.    :  measurements made as explained in Page/Printer Setup
  1049.  
  1050.  PageLength/K/N
  1051.    :  measurement made as explained in Hewlett Packard Printers
  1052.       Has no effect on non HP printers, use PercentPage instead.
  1053.  
  1054.  HPPrinter/S,HPNoCompression/S,HPUniDir/S
  1055.    :  switches as explained in Hewlett Packard Printers
  1056.  
  1057.  HPShingle/K/N
  1058.    :  as explained in Hewlett Packard Printers
  1059.  
  1060.  
  1061.  Last Page
  1062.  ---------
  1063.  
  1064. When printing to both sides of a sheet, the last even page is printed,
  1065. even if it is empty. This is so the sheet is ready for the odd page.
  1066.  
  1067. Printing empty lines can be slow, depending on your printer and printer
  1068. driver. The printer may appear to be doing nothing for a while after
  1069. printing a small amount on the last even page, and the last odd page,
  1070. which is printed immediately after. This should not happen if you use
  1071. the HPPrinter option.
  1072.  
  1073.  Both Sides Printing
  1074.  -------------------
  1075.  
  1076. After all the even pages are printed, you will be prompted to re-insert
  1077. the pages, once the printer has finished printing (emptied its internal
  1078. buffers).
  1079.  
  1080. On a deskjet printer, the pages should be inserted as they came out of
  1081. the printer, face up, top of page closest to the print mechanism.
  1082.  
  1083. Please be aware that 'all the even pages' means all the even pages of
  1084. all the files being printed, not just one at a time.
  1085. This approach requires less intervention by the user - just once in the
  1086. middle of all the files to replace the pages instead of once per file -
  1087. but can result in large jobs eating memory.
  1088.  
  1089. If you plan to print many large files in one go, it might pay to have
  1090. them spooled to disk, otherwise all the odd pages will build up in memory.
  1091.  
  1092.  The End
  1093.  -------
  1094.